home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / source / x2d.d < prev   
Text File  |  2002-10-28  |  4KB  |  125 lines

  1. // to convert any files into PowerD compatible files
  2. // 1.0 (21.11.2001) initial release
  3. // 1.1 (29.4.2002) DMX: added Delay(1) to free some cpu time, recompiled
  4.  
  5. MODULE  'exec/memory','reqtools','libraries/reqtools','intuition/intuition'
  6.  
  7. OPT OSVERSION=37,OPTIMIZE
  8. ENUM SOURCE
  9.  
  10. DEF ReqToolsBase=NIL
  11.  
  12. PROC main()
  13.   DEF myargs:PTR TO LONG,rdargs=NIL,str[256]:STRING
  14.   DEF vers='$VER: x2d v1.1 by MarK and DMX (29.4.2002)'
  15.   myargs:=[NIL,NIL]
  16.   IFN ReqToolsBase:=OpenLibrary('reqtools.library',37) THEN Raise("RTLI")
  17.   IFN rdargs:=ReadArgs('SOURCE',myargs,NIL) THEN Raise("DOS")
  18.   EStrCopy(str,IF myargs[0] THEN myargs[0] ELSE FileReq(str))
  19.  
  20.   DEF filetype
  21.   IF StrCmp(str+EStrLen(str)-3,'.fd')
  22.     filetype:="fd"
  23.   ELSEIF StrCmp(str+EStrLen(str)-2,'.h')
  24.     filetype:="h"
  25.   ELSE
  26.     filetype:=NIL
  27.   ENDIF
  28.  
  29.   DEF command[256]:STRING
  30.   SELECT filetype
  31.   CASE "fd";    PrintF('FileType: \s\n','fd file')
  32.     PrintF('Converting to PowerD compatible module...\n')
  33.     StringF(command,'fd2m "\s"',str)
  34.     Execute(command,NIL,NIL)
  35.     PrintF('Compiling the ascii module and generating ppc interface...\n')
  36.     IF StrCmp(str+StrLen(str)-3,'.fd')  THEN str[StrLen(str)-3]:="\0"
  37.     IF StrCmp(str+StrLen(str)-4,'_lib')
  38.       str[StrLen(str)-4]:="\0"
  39.       StrAdd(str,'.m')
  40.     ENDIF
  41.     StringF(command,'dc "\s" lg t:library',str)
  42.     Execute(command,NIL,NIL)
  43.     PrintF('Generating linklib file...\n')
  44.     CompileAll('t:library')
  45.     str[StrLen(str)-2]:="\0"
  46.     StringF(command,'join t:library/#?.o as "\sbase.lib"',str)
  47.     Execute(command,NIL,NIL)
  48.     Execute('delete t:library all quiet force',NIL,NIL)
  49.     IF 1=request('Copy generated files into the PowerD subdirectories?','_Yes|_No')
  50.       StringF(command,'copy "\s.m" "\s.b" to dmodules: quiet',str,str)
  51.       Execute(command,NIL,NIL)
  52.       StringF(command,'copy "\sbase.lib" to d:lib/modules quiet',str)
  53.       Execute(command,NIL,NIL)
  54.     ENDIF
  55.   CASE "h";   PrintF('FileType: \s\n','c header file')
  56.   DEFAULT;      PrintF('FileType: \s\n','unknown')
  57.   ENDSELECT
  58.   PrintF('Done.   \n')
  59.  
  60. EXCEPTDO
  61.   IF rdargs THEN FreeArgs(rdargs)
  62.   IF ReqToolsBase THEN CloseLibrary(ReqToolsBase)
  63. ENDPROC
  64.  
  65. PROC FileReq(nm:PTR TO CHAR)(PTR)
  66.   DEF name[256]:STRING,
  67.       requestedname[256]:STRING,
  68.       r:PTR TO rtFileRequester
  69.   IF r:=rtAllocRequestA(RTPREF_FILEREQ,NIL)
  70.     rtChangeReqAttr(r,
  71.       RTFI_MatchPat,'#?',
  72.       TAG_END)
  73.     IF rtFileRequest(r,name,'Select a file:',
  74.         RT_ReqPos,REQPOS_CENTERSCR,
  75.         RTFI_Flags,FREQF_PATGAD,
  76.         RTFI_OKText,'_Load',
  77.         RT_Underscore,"_",
  78.         TAG_END)
  79.       EStrCopy(requestedname,r.Dir)
  80.       AddPart(requestedname,name,255)
  81.       ReEStr(requestedname)
  82.       EStrCopy(nm,requestedname)
  83.     ENDIF
  84.     rtFreeRequest(r)
  85.   ENDIF
  86. ENDPROC nm
  87.  
  88. MODULE  'dos/dos'
  89.  
  90. PROC CompileAll(dir:PTR TO UBYTE)
  91.   DEF info:FileInfoBlock,lock,count=0,command[256]:STRING,n=0
  92.   IF lock:=Lock(dir,-2)
  93.     IF Examine(lock,info)
  94.       IF info.DirEntryType>0
  95.         WHILE ExNext(lock,info) DO count++
  96.       ELSE PrintFault(IOErr(),'ddir')
  97.     ELSE PrintFault(IOErr(),'ddir')
  98.     IF Examine(lock,info)
  99.       IF info.DirEntryType>0
  100.         WHILE ExNext(lock,info)
  101.           StringF(command,'pasm -F 2 "\s/\s"',dir,info.FileName)
  102.           Execute(command,NIL,NIL)
  103.           Delay(1)
  104.           n++
  105.           PrintF(' \d/\d\b',n,count)
  106.         ENDWHILE
  107.       ELSE PrintFault(IOErr(),'ddir')
  108.     ELSE PrintFault(IOErr(),'ddir')
  109.     UnLock(lock)
  110.   ELSE PrintFault(IOErr(),'ddir')
  111. ENDPROC
  112.  
  113. PROC request(body,gadgets=NIL,args=NIL)(LONG)
  114.   IF gadgets=NIL THEN gadgets:='_Continue'
  115.   IFN ReqToolsBase
  116.     RETURN EasyRequestArgs(0,[SIZEOF_EasyStruct,0,'RayDream message:',body,gadgets]:EasyStruct,0,args)
  117.   ELSE
  118.     RETURN rtEZRequest(body,gadgets,NIL,args,
  119.       RT_Underscore,"_",
  120.       RT_ReqPos,REQPOS_CENTERSCR,
  121.       RTEZ_ReqTitle,'Message:',
  122.       TAG_END)
  123.   ENDIF
  124. ENDPROC
  125.